﻿namespace ConsoleApp6
{
    //ref 局部变量和引用返回
    /*
     * return 语句返回表达式的值。 可以返回对变量的引用。
     */
    internal class Program
    {
        static void Main(string[] args)
        {
            //ref 局部变量
            int a = 5;
            int b = 6;
            Console.WriteLine($"Original value: a={a},b={b}");
            ModifyValue(ref a, ref b);
            Console.WriteLine($"Modified value:  a={a},b={b}");

            Console.WriteLine("************");
            //引用返回
            int[] numbers = { 1, 2, 3, 4, 5 };
            ref int valueRef = ref FindValue(numbers, 3);
            Console.WriteLine($"Original value: {valueRef}");
            valueRef = 23;
            Console.WriteLine($"Modified value: {numbers[2]}");
        }
        //ref 局部变量
        static void ModifyValue(ref int x, ref int y)
        {
            int temp = x; x = y; y = temp;
        }
        //引用返回
        static ref int FindValue(int[] array, int value)
        {
            for (int i = 0; i < array.Length; i++)
            {
                if (array[i] == value)
                {
                    return ref array[i];
                }
            }
            throw new Exception("Value not found in the array");
        }
    }

}